Streaming media relates to constant delivery of media by a provider, to be received by and presented to an end-user.
Streaming may be used for any type of information such as data, audio or video, and content such as music, movies, games, closed captioning, stock ticker, real-time text, or any other data to be streamed or broadcast. When receiving streamed media, a client media player can start playing or otherwise utilizing the data once a predetermined buffer is filled with received contents and does not need to wait for the full data. This is particularly true when not all the data is a-priori available, such as in gaming applications.
Common environments or applications of streaming media include but are not limited to interactive television information systems such as video on-demand (VoD) providing pre-ready contents or games, and internet television.
Streaming media has become more and more popular due to a number of reasons, including the increased network bandwidth, especially in the last mile, increased access to and commercialization of networks, especially the Internet, and the use of standard protocols and formats, such as TCP/IP, HTTP, and HTML.
A media stream can be streamed either live or on-demand. Live streams are generally provided by a means called “true streaming”, which sends the information without saving the file to a hard disk. On-demand streaming may be provided by a means called progressive streaming or progressive download, which saves the file to a hard disk and then plays it from that location. On-demand streams may be saved to hard disks and servers for extended amounts of time, while the live streams are only generated and available at one time e.g., during an interactive game, a broadcast game or others.
An architecture for live or on-demand services in systems such as but not limited to cable television (CATV) systems may include a plurality of sources, such as files, game servers or others which retrieve or render a sequence of frames; optionally one or more encryption engines, for encrypting the streamed frames; and one or more edge devices, each of which packetizes sub-sets of input streams into a multi program/service transport stream (MPTS) format, modulates each MPTS through a quadrature amplitude modulation (QAM), and transmits the radio frequency (RF) modulated signal to the set top box at the client's premises.
In order to save transmission time, the data may be compressed prior to sending, and decompressed by the client device. The selected type of compression and streaming may be based on the types of the data, the clients and the communication channels.
For example, audio streams may be compressed using an audio codec such as MP3, Vorbis or AAC, while video streams may be compressed using a video codec such as H.264/MPEG-4 or VP8. The stream may be delivered from a streaming server to a streaming client using a transport protocol, such as MMS or RTP. The streaming client may interact with the streaming server using a control protocol, such as MMS or RTSP.
In some applications, in particular fast-paced gaming applications, the streaming rate and quality is of particular importance. Freezing the frame for over a predetermined period of time, or degrading the quality of frames may be unacceptable to users. It is thus required to transmit frames in sufficient rate and streaming quality.